package br.com.ifsp.salto.matriculadp.negocio;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import br.com.ifsp.salto.matriculadp.negocio.to.AlunoTO;
import br.com.ifsp.salto.matriculadp.negocio.to.DisciplinaTO;
import br.com.ifsp.salto.matriculadp.negocio.to.HorarioTO;

class HorarioAlunoFacade implements IHorarioAlunoFacade {

	private HorarioAlunoBO horarioAlunoBO;

	@Autowired
	public void setHorarioAlunoBO(HorarioAlunoBO horarioAlunoBO) {
		this.horarioAlunoBO = horarioAlunoBO;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see br.com.ifsp.salto.matriculadp.negocio.IHorarioAlunoFacade#getAluno(java.lang.String)
	 */
	public AlunoTO getAluno(String prontuario) {
		return horarioAlunoBO.getAluno(prontuario);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * br.com.ifsp.salto.matriculadp.negocio.IHorarioAlunoFacade#insertHorarioAluno(br.com.ifsp.
	 * salto.matriculadp .negocio.to.HorarioTO, java.lang.String, long)
	 */
	public boolean insertHorarioAluno(HorarioTO horario, String prontuario, long idCurso) {
		return horarioAlunoBO.insertHorarioAluno(horario, idCurso, prontuario);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * br.com.ifsp.salto.matriculadp.negocio.IHorarioAlunoFacade#updateHorarioAluno(br.com.ifsp.
	 * salto.matriculadp .negocio.to.HorarioTO, long)
	 */
	public boolean updateHorarioAluno(HorarioTO horario, long idCurso) {
		return horarioAlunoBO.updateHorarioAluno(horario, idCurso);
	}

	public List<DisciplinaTO> getDisciplinasPorSemestreAluno(long idCurso, int semestreAluno) {
		List<DisciplinaTO> disciplinasCurso = horarioAlunoBO.getAllDisciplinas(idCurso);
		
		return HorarioAlunoBO.filterDisciplinasPorSemestreAluno(disciplinasCurso, semestreAluno, new Date());
	}

	public HorarioTO toggleDisciplina(HorarioTO horario, long idDisciplina, long idCurso, int semestreAluno) {
		return horarioAlunoBO.toggleDisciplina(horario, idDisciplina, idCurso, semestreAluno);
	}
	
	public byte[] getPdfImpressao(String prontuario) {
		return horarioAlunoBO.gerarPdfImpressaoHorario(prontuario);
	}

}